import router from './router'
import store from './store'
import { getToken, getAccountNo } from '@/utils/auth'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css'

NProgress.configure({ showSpinner: false });

router.beforeEach(async (to, from, next) => {
    NProgress.start()

    // 如果是登录界面，那么继续
    if (to.path == '/login') {

        // 删除preLoad页面
        let preLoaderElements = document.getElementsByClassName("preloader");
        for (let i = 0; i < preLoaderElements.length; i++) {
            preLoaderElements[i].remove();
        }

        next();
        return;
    }

    // 如果store没有数据
    if (!store.state.user.token) {
        // 取得storage,如果不存在那么重新登录
        if (!getToken() || !getAccountNo()) {
            next(`/login`);
            // 删除preLoad页面
            let preLoaderElements = document.getElementsByClassName("preloader");
            for (let i = 0; i < preLoaderElements.length; i++) {
                preLoaderElements[i].remove();
            }

            return;
        }
        else {
            store.commit('user/SET_TOKEN', getToken());

            // 表示重新首日进入
            // 初始化信息
            // 依据token取得人员信息
            await store.dispatch("user/getUserInfo", getAccountNo());

            // 依据token取得权限
            await store.dispatch("permission/getPermissions", getAccountNo());

            // 删除preLoad页面
            let preLoaderElements = document.getElementsByClassName("preloader");
            for (let i = 0; i < preLoaderElements.length; i++) {
                preLoaderElements[i].remove();
            }
        }
    }
    // 验证路由是否在权限中
    // 如果from为空，那么跳转 /
    // 如果from部位空保持不变

    next();
})

router.afterEach(() => {
    NProgress.done() // finish progress bar
})
